package Shifu.MainServer.Net;

import java.io.*;
import java.rmi.Remote;
import java.rmi.RemoteException;
import Shifu.MainServer.Management.SFileDescriptor;

/**
 * Interfaccia Seeder per il main server
 * @author vr069316
 */

public interface Seeder extends Leecher {


	/**
	 * Salva un file sul sistema
	 * @param fildes descrittore del file da salvare
	 * @param buffer il file da salvare
	 * @param 1 se lo storage è andato a buon fine -1 altrimenti	
	 * @exception RemoteException nel caso ci siano problemi di connessioni
	 */

	public int storageFile(SFileDescriptor filedes,byte[] buffer) throws RemoteException;


	/**
	 * Rimuove un file dal sistema
	 * @param index indice del file da rimuovere
	 * @return 0 se ha avuto successo -1 altrimenti
	 * @exception RemoteException nel caso ci siano problemi di connessioni
	 */

	public int removeFile(int index) throws RemoteException;

	
	/**
	 * Promuove un peers a livello di Seeders
	 * @param i id del peers da promuvoere
	 * @return 1 se la promozione va a buon fine, -1 altrimenti
         */

	public int promovePeer(int i) throws RemoteException;

		
}
